package org.example.controller;

import lombok.extern.slf4j.Slf4j;
import org.example.service.IVerifyCodeService;
import org.example.vo.ResultBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * 这里自动注入就是有一个风险
 * 他先是根据类型进行查找，如果一个类型有多个结果的话，就会根据名称进行查找
 * 如果名称也找不到的话，就会抛出异常
 * 一般配合注解@Qualifier使用，还有一个注解是 @Resource
 * 这两个注解的区别就是一个是spring中的注解，还有一个是jdk自带注解
 * 其中查找的方式也不同的，另外一个注解是按照名称进行查找的
 */
@Slf4j
@RestController
@RequestMapping("/verifyCode")
public class VerifyCodeController {
    @Autowired
    IVerifyCodeService verifyCodeService;
    /**
     * -------------------生成图形验证码---------------------
     * @param key
     * @return
     */
    @GetMapping("/image/{key}")
    public ResultBean graph(@PathVariable("key") String key){
        String base64Str = verifyCodeService.graph(key);
        return ResultBean.SUCCESS(base64Str);
    }
    @GetMapping("/valide/{key}/{code}")
    public ResultBean valide(@PathVariable("key") String key,@PathVariable("code") String code){
      log.info("进行验证码验证key:{},code:{}", key, code);
      boolean vailde=verifyCodeService.valide(key, code);
      return vailde?ResultBean.SUCCESS():ResultBean.ERROR("验证失败");
    }
}
